<template>
    <a-row id="globalHeader" align="center" :wrap="false">
        <a-col flex="auto">
            <a-menu
                mode="horizontal"
                :selected-keys="selectedKeys"
                @menu-item-click="doMenuClick"
            >
                <a-menu-item
                    key="0"
                    :style="{ padding: 0, marginRight: '38px' }"
                    disabled
                >
                    <div class="title-bar">
                        <img class="logo" src="../assets/newOJ.jpg" />
                        <div class="title">朱 OJ</div>
                    </div>
                </a-menu-item>
                <a-menu-item v-for="item in visibleRoutes" :key="item.path">
                    {{ item.name }}
                </a-menu-item>
            </a-menu>
        </a-col>
        <a-col flex="100px">
            <div v-if="store.state.user?.loginUser?.userName == '未登录'">
                <a-button
                    class="login"
                    type="primary"
                    shape="round"
                    @click="login"
                    >登录</a-button
                >
            </div>
            <div v-if="store.state.user?.loginUser?.userName != '未登录'">
                <a-dropdown @select="handleSelect" :popup-max-height="false">
                    <a-button
                        >{{
                            store.state.user?.loginUser?.userName ?? "未登录"
                        }}
                        <icon-down
                    /></a-button>
                    <template #content>
                        <a-doption @click="logout()">logout</a-doption>
                    </template>
                </a-dropdown>
                <!--        <a-dropdown-button>-->
                <!--          {{ store.state.user?.loginUser?.userName ?? "未登录" }}-->
                <!--          <template #icon> ↓ </template>-->
                <!--          <template #content>-->
                <!--            <a-doption @click="logout">logout</a-doption>-->
                <!--          </template>-->
                <!--        </a-dropdown-button>-->
            </div>
        </a-col>
    </a-row>
</template>

<script setup lang="ts">
import { routes } from "../router/routes";
import { useRoute, useRouter } from "vue-router";
import { computed, ref } from "vue";
import { useStore } from "vuex";
import checkAccess from "@/access/checkAccess";
import ACCESS_ENUM from "@/access/accessEnum";

const router = useRouter();
const store = useStore();
// 展示在菜单的路由数组
const visibleRoutes = computed(() => {
    return routes.filter((item, index) => {
        if (item.meta?.hideInMenu) {
            return false;
        }
        // 根据权限过滤菜单
        if (
            !checkAccess(
                store.state.user.loginUser,
                item?.meta?.access as string
            )
        ) {
            return false;
        }
        return true;
    });
});
const login = () => {
    router.push("/user/login");
};

const logout = () => {
    store.dispatch("user/logout", {
        userName: "未登录",
        userRole: ACCESS_ENUM.NOT_LOGIN,
    });
};
// 默认主页
const selectedKeys = ref(["/"]);

// 路由跳转后，更新选中的菜单项
router.afterEach((to, from, failure) => {
    selectedKeys.value = [to.path];
});

setTimeout(() => {
    store.dispatch("user/getLoginUser", {
        userName: "鱼皮管理员",
        userRole: ACCESS_ENUM.ADMIN,
    });
}, 3000);

const doMenuClick = (key: string) => {
    router.push({
        path: key,
    });
};
</script>

<style scoped>
.login {
    text-align: left;
}
.title-bar {
    display: flex;
    align-items: center;
}

.title {
    color: #444;
    margin-left: 16px;
}

.logo {
    height: 48px;
}
</style>
